--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
docs/example_plugins/gpsd_location.py a428d4c9385e53a9b86e76a07ccdbef56e22d549 (a428d4c9) Text, 3.79 KB
Tff7b72import T7ee787RNS
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
T8b949e# This plugin requires the "gpsdclient" pip
T8b949e# package to be installed on your system.
T8b949e# Install it with: pip install gpsdclient
Tff7b72from T7ee787gpsdclient Tff7b72import Te6edf3GPSDClient
Tff7b72class T56d364GpsdLocationPluginTb4b4b4(Te6edf3SidebandTelemetryPluginTb4b4b4)Tb4b4b4:
Te6edf3plugin_name Tff7b72= Ta5d6ff"Ta5d6ffgpsd_locationTa5d6ff"
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sideband_coreTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconnect_timeout Tff7b72= T79c0ff5.0
Tff7b72selfTff7b72.Td2a8ffclient Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffclient_connected Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fflatitude Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflongitude Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffaltitude Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffspeed Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffbearing Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffaccuracy Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflast_update Tff7b72= Tff7b72None
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3sideband_coreTb4b4b4)
Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffStarting Linux GPSd Location provider plugin...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True
Te6edf3update_thread Tff7b72= Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ffupdate_jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3update_threadTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffupdate_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72while Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffConnecting to local GPSd...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffclient_connected Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffclient Tff7b72= Te6edf3GPSDClientTb4b4b4(Te6edf3timeoutTff7b72=Tff7b72selfTff7b72.Td2a8ffconnect_timeoutTb4b4b4)
Tff7b72for Te6edf3result Tff7b72in Tff7b72selfTff7b72.Td2a8ffclientTff7b72.Td2a8ffdict_streamTb4b4b4(Te6edf3convert_datetimeTff7b72=Tff7b72TrueTb4b4b4, Tffa657filterTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffTPVTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffclient_connectedTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffConnected, streaming GPSd dataTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffclient_connected Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8fflast_update Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fflatitude Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflatTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflongitude Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflonTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffaltitude Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffaltHAETa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffspeed Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffspeedTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffbearing Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftrackTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Te6edf3epx Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffepxTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)Tb4b4b4; Te6edf3epy Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffepyTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Te6edf3epv Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffepvTa5d6ff"Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3epx Tff7b72!= Tff7b72None Tff7b72and Te6edf3epy Tff7b72!= Tff7b72None Tff7b72and Te6edf3epv Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffaccuracy Tff7b72= Tffa657maxTb4b4b4(Te6edf3epxTb4b4b4, Te6edf3epyTb4b4b4, Te6edf3epvTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffaccuracy Tff7b72= Tff7b72None
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffCould not connect to local GPSd, retrying laterTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff5Tb4b4b4)
Tff7b72def Td2a8ffhas_locationTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3lat Tff7b72= Tff7b72selfTff7b72.Td2a8fflatitude Tff7b72!= Tff7b72NoneTb4b4b4; Te6edf3lon Tff7b72= Tff7b72selfTff7b72.Td2a8fflongitude Tff7b72!= Tff7b72None
Te6edf3alt Tff7b72= Tff7b72selfTff7b72.Td2a8ffaltitude Tff7b72!= Tff7b72NoneTb4b4b4; Te6edf3spd Tff7b72= Tff7b72selfTff7b72.Td2a8ffspeed Tff7b72!= Tff7b72None
Te6edf3brg Tff7b72= Tff7b72selfTff7b72.Td2a8ffbearing Tff7b72!= Tff7b72NoneTb4b4b4; Te6edf3acc Tff7b72= Tff7b72selfTff7b72.Td2a8ffaccuracy Tff7b72!= Tff7b72None
Tff7b72return Te6edf3lat Tff7b72and Te6edf3lon Tff7b72and Te6edf3alt Tff7b72and Te6edf3spd Tff7b72and Te6edf3brg Tff7b72and Te6edf3acc
Tff7b72def Td2a8ffupdate_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3telemeterTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_runningTb4b4b4(Tb4b4b4) Tff7b72and Te6edf3telemeter Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhas_locationTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffUpdating location from gpsdTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72not Ta5d6ff"Ta5d6fflocationTa5d6ff" Tff7b72in Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4:
Te6edf3telemeterTff7b72.Td2a8ffsynthesizeTb4b4b4(Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4)
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflatitude Tff7b72= Tff7b72selfTff7b72.Td2a8fflatitude
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflongitude Tff7b72= Tff7b72selfTff7b72.Td2a8fflongitude
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffaltitude Tff7b72= Tff7b72selfTff7b72.Td2a8ffaltitude
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffspeed Tff7b72= Tff7b72selfTff7b72.Td2a8ffspeed
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffbearing Tff7b72= Tff7b72selfTff7b72.Td2a8ffbearing
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffaccuracy Tff7b72= Tff7b72selfTff7b72.Td2a8ffaccuracy
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffstale_time Tff7b72= T79c0ff5
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffset_update_timeTb4b4b4(Tff7b72selfTff7b72.Td2a8fflast_updateTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffNo location from GPSd yetTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
T8b949e# Finally, tell Sideband what class in this
T8b949e# file is the actual plugin class.
Te6edf3plugin_class Tff7b72= Te6edf3GpsdLocationPlugin
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────